草庐IT

C++ 风格约定 : Parameter Names within Class Declaration

全部标签

c++ - 这是糟糕的 C++ 风格还是编辑器错误?

我在我正在试用的新C++编辑器(CLion)中有这段代码:structscreenPoint{floatx=0,y=0;screenPoint(floatx_,floaty_):x{x_},y{y_}{}};structposition{screenPointul;floatwidth=0,height=0;position(screenPointp,floatw,floath):ul{p},width{w},height{h}{}};接近尾声的是初始化语句ul{p},我认为这是使用大括号初始化的有效C++方法。然而,CLion提示道:初始化器中的不兼容类型:“float”和“scre

javascript - OpenCV Rect 约定——什么是 x、y、宽度、高度?

我正在研究OpenCVtutorialfoundhere.我对以下代码行中表示的内容感到有些困惑:lettrackWindow=newcv.Rect(150,60,63,125);在这种情况下,我不确定关于x、y、宽度、高度究竟表示什么的约定是什么。我画了一张图来展示我的想法。请问我的理解是否正确? 最佳答案 约定如下,就是你说的x,y,w,h,x,y是盒子左上角的坐标,w,h只是宽和高,就这样,并且类似地,图像的原点是左上角,而不是左下角,正如您的绘图所指定的那样这里有一张图可以更好地说明这一点

c++ - 我的 C++ 类必须是 Windows 8 Metro 风格应用程序中的引用类吗?

我知道,如果我想将我的C++代码作为WinRT组件共享给.Net和JavaScript代码,我必须将我的类声明为publicrefMyClasssealed。但是,如果我有一个我只想在我的应用程序中使用的类,它是否需要是一个ref类?假设我有一个简单的建筑类。是否可以定义如下#pragmaonceclassBuilding{public:Building(intcap);~Building(void);intget_capacity(){returncapacity;}private:intcapacity;};然后像这样使用std::shared_ptrbldg=std::make_

c++ - 链表节点的 RAII 风格 C++ 类

我现在正在玩链表作为练习。我在CrackingTheCodingInterview中查看的示例book没有LinkedList(manager)类,只有Nodes,你在main函数中卡在headNode上。我查阅了C++实现,但大多数似乎比C++更像C风格,即不是面向对象的。它们使用结构,没有类,并且有一个用于删除列表的静态方法,您需要明确记住要调用该方法。我想编写一个合理的RAII(资源获取即初始化)风格的C++类,带有合理的析构函数来处理内存释放,我只想使用一个Node类(没有LinkedList类)。我看到这个工作的唯一方法是让Node的析构函数删除下一个Node(如果有的话),

c++ - 在同一项目中混合使用 C++ 风格

在同一个项目中混合使用C++98和C++11是否安全?我所说的“混合”不仅指链接目标文件,还指包含在使用C++98和C++11编译的源代码中的公共(public)头文件。这个问题的背景是希望至少将大型代码库的一部分过渡到C++11。部分代码在C++CUDA中,编译后可以在GPU或CPU上执行,对应的编译器暂时不支持C++11。然而,大部分代码仅适用于CPU,并且可以使用任何一种C++风格进行编译。一些头文件包含在CPU+GPU和CPU-only源文件中。如果我们现在使用C++11编译器编译CPU-only源文件,我们是否有信心避免不良副作用? 最佳答案

c++ - C++ 调用约定是否受标准约束,因为函数的返回类型不需要在声明 fn 时定义?

在研究OneDefinitionRule时在维基百科中,我陷入了Examples中的以下示例部分:structS;//declarationofS...Sf();//ok,nodefinitionrequired...我知道堆栈上的空间需要为返回值分配,但看到这个例子让我想到C++调用约定可能规定返回值的堆栈管理由函数所在的代码块处理定义,而不是调用它的代码块。所以我研究了“Cvs.C++调用约定”(回想起堆栈返回值分配问题可能是主要区别),并遇到了thisanswer,这表明“调用约定”不是由标准定义的。但是,考虑到上述代码片段有效的明显要求,在我看来,为了支持上述代码片段,必须对调

c++ - 何时使用 `__fastcall` 调用约定

我们有很多用C++编写的基于VCL的应用程序。所有VCL方法(在__published类修饰符下)都需要__fastcall调用约定。但是,无论出于何种原因,开发人员一直在将__fastcall添加到其他private、protected或public的非VCL函数。基于thisarticle,这对我来说毫无意义,因为它不必要地使代码复杂化,甚至可能会影响性能(虽然可能可以忽略不计)。尽管如此,在建议我们在某些地方删除它之后,我被告知我们一直都是这样做的,所以要保持一致,这只是一个风格问题。我认为如果没有必要,它实际上会让人们感到困惑,所以这是不好的做法。我的问题是,什么时候使用__f

c++ - 奇怪的函数调用约定

我正在windbg中调试一个x86DLL,特别是一个据称具有以下签名的函数:bool__cdeclfunc(LPVOIDp1,LPVOIDp2,wchar_t*p3,size_tp4,LPVOIDp5)函数未导出。AFAIK__cdecl应该接收堆栈上的所有参数,caller应该清除堆栈。但事实并非如此。Windbg说调用约定是__cdecl但前两个参数在ecx和edx上传递,就像__fastcall功能。此外,函数本身正在清除堆栈,(我认为)不应该由__cdecl函数完成。我试图Hook该函数但没有成功。我尝试将绕行函数设置为__cdecl和__fastcall并且都导致崩溃。有什么

c++ - 帮助 C++ 化这个 C 风格的代码

嘿,我习惯用C开发,我想在项目中使用C++。谁能给我一个例子,说明我如何将这种C风格的代码翻译成C++代码。我知道它应该在C++编译器中编译,但我说的是使用C++技术(即类、RAII)typedefstructSolutionSolution;structSolution{doublex[30];intitt_found;doublevalue;};Solution*NewSolution(){Solution*S=(Solution*)malloc(sizeof(Solution));for(inti=0;x[i]=0;}S->itt_found=-1;returnS;}voidFr

c++ - 带有 DirectX 部分的 Metro 风格应用程序

Windows8API是否允许我编写将XAML用于UI并使用DirectX呈现3D对象的应用程序?假设我正在编写一个3D建模应用程序。我想在XAML中制作许多对话框和UI元素,以及我将使用DirectX呈现的单个矩形窗口。我更喜欢使用C++。这可能吗? 最佳答案 好消息!看来Windows8的发布版本将允许Metro/XAML和DirectXInterop!ThisisacommonthemethatweheardafterwereleasedtheDeveloperPreview.Developerslikeyouwantedto